package com.uchonor.api.core.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.data.annotation.Transient;

import java.util.*;

@Data
@TableName("t_bcp_interface_parameter_config")
public class InterfaceParameterConfig {
    /** 参数id **/
    @TableId(value = "PARAMETER_ID", type = IdType.ASSIGN_UUID)
    private String parameterId;

    /** 所属接口id **/
    private String interfaceId;

    /** 参数key **/
    private String parameterKey;

    /** 是否必填 **/
    private String parameterRequired;

    /** 参数类型（Date,String,Boolean,Integer,Double,Long,Short,Float,Byte） **/
    private String parameterType;

    /** 验证方式 **/
    private String parameterValidationType;

    /** 表达式或则正则表达式 **/
    private String parameterValidationContent;

    /** 表达式验证说明 **/
    private String parameterValidationTips;

    /** 参数说明 **/
    private String parameterDesc;

    /** 参数位置，request,path,header,requestBody **/
    private String parameterPosition;

    /** 默认值 **/
    private String parameterDefaultValue;

    /** 父节点id,0:为根节点 **/
    private String parameterParentId;

    /** 对应数据库表 **/
    private String dbTable;

    /** 对应数据库字段 **/
    private String dbColumn;

    /** 对应数据库属性.驼峰式 **/
    private String dbProperties;

    /** 是否主键 **/
    private String dbPk;

    /** 主键类型,autoIncr:自增，uuid：uuid **/
    private String pkType;

    /** 查询条件 and,or **/
    private String queryType;

    /** 查询连接符
     * eq --> ==
     * ne --> <>
     * lt --> <
     * gt --> >
     * lte --> <=
     * gte --> >=
     * in --> in
     * notIn --> not in
     * like --> like
     * notLike --> not like
     **/
    private String criteriaType;
    /**
     * 创建者
     */
    private String createUser;

    /**
     * 创建时间
     */
    @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss")
    private Date createTime;

    private String createName;

    /**
     * 最后修改者
     */
    private String updateUser;

    /**
     * 最后修改时间
     */
    @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss")
    private Date updateTime;

    private String updateName;

    private String proId;

    private String orgId;

    private String tenantId;

    @Transient
    private List<InterfaceParameterConfig> children;
}
